package com.woniu.cq.malluser.common;

/**
 * @author Daniel
 * @version 1.0.0
 * @ClassName aa
 * @Description TODO
 * @createTime 2020年09月21日 17:30:00
 */

import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

import java.util.Map;

/**
 * 发送短信
 * @author pl727
 */
public class AliyunMessage {

    /**
     * @description:  设置公共请求参数，初始化Client。
     * @param: null
     * @return:
     */
    private DefaultProfile profile = DefaultProfile.getProfile(
            "cn-hangzhou",// API支持的地域ID，如短信API的值为：cn-hangzhou。
            "LTAI4GFm2rtaoRz9KXFrf9iE",// 您的AccessKey ID。
            "kNdPc5D6jejXioU3tn7nQfuhDzXycJ");// 您的AccessKey Secret。
    private IAcsClient client = new DefaultAcsClient(profile);

    private static void log_print(String functionName, Object result) {
        Gson gson = new Gson();
        System.out.println("-------------------------------" + functionName + "-------------------------------");
        System.out.println(gson.toJson(result));
    }

    /**
     * 发送短信
     * 传入电话号码和随机生成的验证码
     */
    public String sendSms(String tel, String code) throws ClientException {
        CommonRequest request = new CommonRequest();
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        // 接收短信的手机号码
        request.putQueryParameter("PhoneNumbers", tel);
        // 短信签名名称。请在控制台签名管理页面签名名称一列查看（必须是已添加、并通过审核的短信签名）。
        request.putQueryParameter("SignName", "ABC商城");
        // 短信模板ID
        request.putQueryParameter("TemplateCode", "SMS_202823973");
        // 短信模板变量对应的实际值，JSON格式。
        request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}");
        CommonResponse commonResponse = client.getCommonResponse(request);
        String data = commonResponse.getData();
        String sData = data.replaceAll("'\'", "");
        log_print("sendSms", sData);
        Gson gson = new Gson();
        Map map = gson.fromJson(sData, Map.class);
        Object bizId = map.get("BizId");
        return bizId.toString();
    }
}

/**
 * 查询发送详情
 */
//    private void querySendDetails(String bizId) throws ClientException {
//        CommonRequest request = new CommonRequest();
//        request.setSysDomain("dysmsapi.aliyuncs.com");
//        request.setSysVersion("2017-05-25");
//        request.setSysAction("QuerySendDetails");
//        // 接收短信的手机号码
//        request.putQueryParameter("PhoneNumber", tel);
//        // 短信发送日期，支持查询最近30天的记录。格式为yyyyMMdd，例如20191010。
//        request.putQueryParameter("SendDate", "20191010");
//        // 分页记录数量
//        request.putQueryParameter("PageSize", "10");
//        // 分页当前页码
//        request.putQueryParameter("CurrentPage", "1");
//        // 发送回执ID，即发送流水号。
//        request.putQueryParameter("BizId", bizId);
//        CommonResponse response = client.getCommonResponse(request);
//        log_print("querySendDetails", response.getData());
//    }

//    public static void main(String[] args) {
//        aliyunMessage sendSmsDemo = new aliyunMessage();
//
//        try {
//            // 创建短信模板
//            String templateCode = sendSmsDemo.addSmsTemplate();
//            // 使用刚创建的短信模板发送短信
//            String bizId = sendSmsDemo.sendSms(templateCode);
//            // 根据短信发送流水号查询短信发送情况
//            sendSmsDemo.querySendDetails(bizId);
//        } catch (ClientException e) {
//            e.printStackTrace();
//        }
//    }